"""
BER codec en-/decoders for ISO 8823
"""
from scapy.asn1.ber import BERcodec_SET, BERcodec_SEQUENCE, BERcodec_INTEGER, BERcodec_STRING, BERcodec_OID
from .tags import ASN1_Tags_ISO_8823


class BER_Codec_MODE_SELECTOR(BERcodec_SET):
    tag = ASN1_Tags_ISO_8823.MODE_SELECTOR_TAG


class BER_Codec_NORMAL_MODE_PARAMETERS(BERcodec_SEQUENCE):
    tag = ASN1_Tags_ISO_8823.NORMAL_MODE_PARAMETERS_TAG


class BER_Codec_MODE_VALUE(BERcodec_INTEGER):
    tag = ASN1_Tags_ISO_8823.MODE_VALUE_TAG


class BER_Codec_CP_TYPE(BERcodec_SET):
    tag = ASN1_Tags_ISO_8823.CP_TYPE_TAG


class BER_Codec_CALLING_PRESENTATION_SELECTOR(BERcodec_STRING):
    tag = ASN1_Tags_ISO_8823.CALLING_PRESENTATION_SELECTOR_TAG


class BER_Codec_CALLED_PRESENTATION_SELECTOR(BERcodec_STRING):
    tag = ASN1_Tags_ISO_8823.CALLED_PRESENTATION_SELECTOR_TAG


class BER_Codec_PRESENTATION_CONTEXT_DEFINITION_LIST(BERcodec_SEQUENCE):
    tag = ASN1_Tags_ISO_8823.PRESENTATION_CONTEXT_DEFINITION_LIST_TAG


class BER_Codec_PRESENTATION_CONTEXT_IDENTIFIER(BERcodec_INTEGER):
    tag = ASN1_Tags_ISO_8823.PRESENTATION_CONTEXT_IDENTIFIER_TAG


class BER_Codec_ABSTRACT_SYNTAX_NAME(BERcodec_OID):
    tag = ASN1_Tags_ISO_8823.ABSTRACT_SYNTAX_NAME_TAG


class BER_Codec_TRANSFER_SYNTAX_NAME(BERcodec_OID):
    tag = ASN1_Tags_ISO_8823.TRANSFER_SYNTAX_NAME_TAG


class BER_Codec_FULLY_ENCODED_DATA(BERcodec_SEQUENCE):
    tag = ASN1_Tags_ISO_8823.FULLY_ENCODED_DATA_TAG


class BER_Codec_CONTENT(BERcodec_SEQUENCE):
    tag = ASN1_Tags_ISO_8823.CONTENT_TAG


class BER_Codec_RESPONDING_PRESENTATION_SELECTOR(BERcodec_STRING):
    tag = ASN1_Tags_ISO_8823.RESPONDING_PRESENTATION_SELECTOR_TAG


class BER_Codec_PRESENTATION_CONTEXT_DEFINITION_RESULT_LIST(BERcodec_STRING):
    tag = ASN1_Tags_ISO_8823.PRESENTATION_CONTEXT_DEFINITION_RESULT_LIST_TAG


class BER_Codec_RESULT(BERcodec_INTEGER):
    tag = ASN1_Tags_ISO_8823.RESULT_TAG


class BER_Codec_RESULT_LIST_TRANSFER_SYNTAX(BERcodec_OID):
    tag = ASN1_Tags_ISO_8823.RESULT_LIST_TRANSFER_SYNTAX_TAG
